#[derive(Debug)]
struct Rectangle {
    width: u32,
    height: u32,
}
impl Rectangle{
    // 计算矩形的面积
    fn caculate_rect_area(&self) -> u32 {
        // 返回矩形的宽度和高度相乘的结果
        self.width * self.height
    }

    // 返回一个布尔值，表示self的宽度是否大于0
    fn width(&self) -> bool {
        self.width > 0
    }

    // 设置宽度
    fn set_width(&mut self, width: u32) {
        // 将传入的宽度赋值给self.width
        self.width = width;
    }

    // 获取宽度
    fn get_width(&self) -> u32 {
        // 返回宽度
        self.width
    }

    // 判断当前矩形是否可以容纳另一个矩形
    fn can_hold(&self, other: &Rectangle) -> bool {
        // 如果当前矩形的宽度大于另一个矩形的宽度，并且当前矩形的高度大于另一个矩形的高度，则返回true
        self.width > other.width && self.height > other.height
    }
}

fn main() {
    // 创建一个矩形对象
    let mut rect1 = Rectangle {
        width: 30,
        height: 50,
    };

    // 打印矩形的面积
    println!(
        "The area of the rectangle is {} square pixels.",
        rect1.caculate_rect_area()
    );

    // 判断矩形的宽度是否为0
    if rect1.width() {
        // 打印矩形的宽度
        println!("The rectangle has a nonzero width; it is {}", rect1.width);
    }

    rect1.set_width(100);
    println!("The rectangle's width is now {}", rect1.get_width());

    let rect2 = Rectangle {
        width: 10,
        height: 40,
    };

    // 判断rect1是否可以容纳rect2
    if rect1.can_hold(&rect2) {
        println!("rect1 can hold rect2");
    } else {
        println!("rect1 cannot hold rect2");
    }
}